package cola;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Cola {
BufferedReader leer = new BufferedReader(new InputStreamReader(System.in));
	class Nodo{
		Object info;
		Nodo Siguiente;
	}
	Nodo cabeza;
	Nodo cola;	
	public Cola() throws IOException {
		cabeza=null;
		cola=null;		
		menu();
	}

	private void menu() throws IOException {
		int res=1;
		Object dato;
		while(res !=0){
			System.out.print("\n<<<<<ELIJA UNA OPCION<<<<<<<<<");
			System.out.print("\n1. INSERTAR NOMBRE A LA FILA <");
			System.out.print("\n2. ATENDER A PERSONA         <");
			System.out.print("\n3. IMPRIMIR                  <");
			System.out.print("\n0. SALIR                     <");
			System.out.print("\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
			res=Integer.parseInt(leer.readLine());
					
			switch(res){
			case 1: 
				System.out.print("\n INSERTE NOMBRE PARA INSERTAR :");
				dato=leer.readLine();
				insertar(dato);
			break;
			case 2:
				dato=quitar();
			break;
			case 0:
				System.out.print("\n<<<<<< ADIOS <<<<<<<\n");
			break;
			case 3:
				imprimir();
			break;
			default:
				System.out.print("\n<<<<<< OPCION INVALIDA <<<<<<<\n");
			break;
			}
			
			
		}
		
	}

	private void imprimir() {
		Nodo aux=cabeza;		
		System.out.print("\n. CABEZA (SIGUIENTE)<<<<<<<<<");
		while(aux!=null){
			System.out.print(aux.info+"|");
			if(aux.Siguiente ==null)
				System.out.print("<<<<<<<<<. COLA");
				
			aux=aux.Siguiente;
		}
		System.out.println();
		
	}

	private Object quitar() {
		Object temp = cabeza.info;
		
		
		return temp;
	}

	private void insertar(Object dato) {
		Nodo nuevo = new Nodo();
		nuevo.info=dato;
		nuevo.Siguiente=null;
		
			
			if( cola==null){
				cabeza=nuevo;
				cola=nuevo;
			}
			else{
				cola.Siguiente=nuevo;
				cola=nuevo;
				
			}
	}
}
